package agentes;

import java.util.ArrayList;

import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTextPane;

public class FormulaDicas {

	ArrayList<JTextField> opcao = new ArrayList<JTextField>();
	ArrayList<JPanel> panel = new ArrayList<JPanel>();
	JTextPane dica;
	int erros[];

	public void setErros(int i[]) {
		erros = i;
	}

	public int[] getErros() {
		return erros;
	}

	public void setPanel(JPanel j, int i) {
		panel.add(i, j);
	}

	public JPanel getPanel(int i) {
		return panel.get(i);
	}

	public void setDica(JTextPane t) {
		dica = t;
	}

	public void setOpcao(JTextField op, int i) {
		opcao.add(i, op);
	}

	public JTextField getOpcao(int i) {
		return opcao.get(i);
	}

	public int getValueOpcao(int i) {
		return Integer.parseInt(opcao.get(i).getText());
	}

	public void mostrarAlerta(int tipo) {

		switch (tipo) {
		// op7 x op8 != 12 .... op9 != 12
		case 1:
			dica.setText("<br>"
					+ "No passo 4, você deve ter se confundido no seguinte cálculo: "
					+ getValueOpcao(7) + " x " + getValueOpcao(8) + "<br><br>");
			erros[0]++;
			break;

		// op0 == 2
		case 2:
			if (erros[1] == 0) {
				dica.setText("<br>"
						+ "No passo 1, ocê deve estar confundindo o total de elementos (bandas) <br>"
						+ "pelo número de elementos (1° e 2° lugares) a serem escolhidos.<br>"
						+ "Lembre-se que a fórmula é <b>n!/(n-p)!</b> <br><br>");
			} else {
				dica.setText("<br>"
						+ "No passo 1, você deve estar confundindo o total de elementos (bandas) <br>"
						+ "pelo número de elementos (1° e 2° lugares) a serem escolhidos.<br>"
						+ "Lembre-se que a fórmula é <b>n!/(n-p)!</b> <br>"
						+ "sendo <b>n</b> elementos agrupados <b>p</b> a <b>p</b><br><br>");
			}
			erros[1]++;
			break;

		// op1 < op2
		case 3:
			if (erros[2] == 0) {
				dica.setText("<br>"
						+ "No arranjo A(n,p), <b>n</b> é sempre maior ou igual a <b>p</b>"
						+ "<br><br>");
			} else {
				dica.setText("<br>"
						+ "No arranjo A(n,p), <b>n</b> é sempre maior ou igual a <b>p</b><br>"
						+ "<center>" + getValueOpcao(1) + " é menor "
						+ getValueOpcao(2) + "</center>" + "<br><br>");
			}
			erros[2]++;
			break;

		// op1 == 2 && op2 == 4
		case 4:
			if (erros[3] == 0) {
				dica.setText("<br>"
						+ "No passo 1, você deve estar confundindo a quantidade de elementos (bandas) <br>"
						+ "com o número de posições (2: primeiro e segundo lugar).<br><br>");
			} else {
				dica.setText("<br>"
						+ "No passo 1, você deve estar confundindo a quantidade de elementos (bandas) <br>"
						+ "com o número de posições (2: primeiro e segundo lugar).<br><br>"
						+ "Lembre-se que no arranjo A(n,p), <b>n</b> é sempre maior ou igual a <b>p</b>"
						+ "<br><br>");
			}
			erros[3]++;
			break;

		// op0 > 4
		case 5:
			if (erros[4] == 0) {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(0)
						+ " é superior ao total de elementos." + "<br><br>");
			} else {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(0)
						+ " é superior ao total de elementos."
						+ "Lembre-se que a fórmula é <b>n!/(n-p)!</b> <br>"
						+ "sendo <b>n</b> elementos agrupados <b>p</b> a <b>p</b><br><br>");
			}
			erros[4]++;
			break;

		// ops vazios
		case 6:
			if (erros[5] == 0) {
				dica.setText("<br>&nbsp;&nbsp;Lembre-se que a fórmula é <b>n!/(n-p)!</b> <br>"
						+ "sendo <b>n</b> elementos agrupados <b>p</b> a <b>p</b><br><br>");
			} else if (erros[5] == 1) {
				dica.setText("<br>&nbsp;&nbsp;Lembre-se que a fórmula é <b>n!/(n-p)!</b> <br>"
						+ "sendo <b>n</b> elementos agrupados <b>p</b> a <b>p</b>.<br><br>"
						+ "Exemplo: Dado o conjunto B = {5,6,7}, veja os possíveis agrupamentos formados com 2 elementos de B.<br>"
						+ "5 -- 6 --> {5,6} <br>"
						+ "5 -- 7 --> {5,7} <br><br>"
						+

						"6 -- 5 --> {6,5} <br>"
						+ "6 -- 7 --> {6,7} <br><br>"
						+

						"7 -- 5 --> {7,5} <br>"
						+ "7 -- 6 --> {7,6} <br><br>"
						+ "<br><br>");
			} else {
				dica.setText("<br>&nbsp;&nbsp;Lembre-se que a fórmula é <b>n!/(n-p)!</b> <br>"
						+ "sendo <b>n</b> elementos agrupados <b>p</b> a <b>p</b>.<br><br>"
						+ "Pelo primeiro exercício proposto, queremos saber quantas <br>"
						+ "possibilidades existem de formar o 1° e 2° lugar no concurso com 4 bandas concorrentes.<br>"
						+ "Ou seja, 4 bandas agrupadas 2 a 2." + "<br><br>");
			}
			erros[5]++;
			break;

		// fim do exercicio
		case 7:

			dica.setText("<br>"
					+ "Parabéns! Você resolveu corretamente o exercício.<br>"
					+ "Agora, para fixar o conteúdo clique na aba '5- Exercícios de fixação'."
					+ "<br><br>");

			erros[6]++;
			break;

		// op0 < 4
		case 8:
			if (erros[7] == 0) {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(0)
						+ " é inferior ao total de elementos." + "<br><br>");
			} else {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(0)
						+ " é inferior ao total de elementos.<br>"
						+ "E lembre-se que a fórmula é <b>n!/(n-p)!</b> <br>"
						+ "sendo <b>n</b> elementos agrupados <b>p</b> a <b>p</b><br><br>");
			}
			erros[7]++;
			break;

		// op1 > 4
		case 9:
			if (erros[8] == 0) {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(1)
						+ " é superior ao total de elementos." + "<br><br>");
			} else {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(1)
						+ " é superior ao total de elementos.<br>"
						+ "E lembre-se que a fórmula é <b>n!/(n-p)!</b> <br>"
						+ "sendo <b>n</b> elementos agrupados <b>p</b> a <b>p</b><br><br>");
			}
			erros[8]++;
			break;

		// op1 < 4
		case 10:
			if (erros[9] == 0) {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(1)
						+ " é inferior ao total de elementos." + "<br><br>");
			} else {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(1)
						+ " é inferior ao total de elementos.<br>"
						+ "E lembre-se que a fórmula é <b>n!/(n-p)!</b> <br>"
						+ "sendo <b>n</b> elementos agrupados <b>p</b> a <b>p</b><br><br>");
			}
			erros[9]++;
			break;

		// op2 > 2
		case 11:
			if (erros[10] == 0) {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(2)
						+ " é superior ao número de grupos de elementos."
						+ "<br><br>");
			} else {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(2)
						+ " é superior ao número de grupos de elementos.<br>"
						+ "E lembre-se que a fórmula é <b>n!/(n-p)!</b> <br>"
						+ "sendo <b>n</b> elementos agrupados <b>p</b> a <b>p</b><br><br>");
			}
			erros[10]++;
			break;

		// op2 < 2
		case 12:
			if (erros[11] == 0) {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(2)
						+ " é inferior ao número de grupos de elementos."
						+ "<br><br>");
			} else {
				dica.setText("<br>"
						+ "Observe que no passo 1, o valor indicado "
						+ getValueOpcao(2)
						+ " é inferior ao número de grupos de elementos.<br>"
						+ "E lembre-se que a fórmula é <b>n!/(n-p)!</b> <br>"
						+ "sendo <b>n</b> elementos agrupados <b>p</b> a <b>p</b><br><br>");
			}
			erros[11]++;
			break;

		// op5 != 2 && ((op3 != 4 && op4 != 3) || (op3 != 4 && op4 != 3))
		case 13:
			if (erros[12] == 0) {
				dica.setText("<br> N! é o representação do fatorial de N.<br>"
						+ "Sendo 0! = 1, N! = N x (N-1)! = N x (N-1) x (N-2) x ... x 0!<br><br>");
			} else {
				dica.setText("<br> N! é o representação do fatorial de N.<br>"
						+ "Sendo 0! = 1, N! = N x (N-1)! = N x (N-1) x (N-2) x ... x 0!<br>"
						+ "Por exemplo, <br>" + "= 3! <br>" + "= 3 x 2! <br>"
						+ "= 3 x 2 x 1! <br>" + "= 3 x 2 x 1 x 0! <br>"
						+ "= 3 x 2 x 1 x 1 = 6." + "<br><br>");
			}
			erros[12]++;
			break;

		// op6 != 2
		case 14:
			dica.setText("<br>"
					+ "Você deve ter se confundido no seguinte cálculo no denominador do passo 2: "
					+ getValueOpcao(1) + " - " + getValueOpcao(2) + "<br><br>");

			erros[13]++;
			break;

		// op7 != 3 && op8 != 4 || op7 != 4 && op8 != 3
		case 15:
			if (erros[14] == 0) {
				dica.setText("<br>"
						+ "Observe que no passo 2, o 2! do numerador simplifica com o 2! do denominador."
						+ "<br><br>");
			} else {
				dica.setText("<br>"
						+ "Observe que no passo 2, o 2! do numerador simplifica com o 2! do denominador.<br>"
						+ "Restando apenas " + getValueOpcao(3) + " x "
						+ getValueOpcao(4) + "<br><br>");
			}
			erros[14]++;
			break;
		case 16:
			if (erros[15] == 0) {
				dica.setText("<br>Observe que N! é a representação do fatorial de N.<br>"
						+ "Sendo 0! = 1, N! = N x (N-1)! = N x (N-1) x (N-2) x ... x 0!<br><br>");
			} else {
				dica.setText("<br>Observe que N! é a representação do fatorial de N.<br>"
						+ "Sendo 0! = 1, N! = N x (N-1)! = N x (N-1) x (N-2) x ... x 0!<br><br>"
						+ "Por exemplo, <br>"
						+ "= 3! <br>"
						+ "= 3 x 2! <br>"
						+ "= 3 x 2 x 1! <br>"
						+ "= 3 x 2 x 1 x 0! <br>"
						+ "= 3 x 2 x 1 x 1 = 6." + "<br><br>");
			}
			erros[15]++;
			break;

		case 17:
			if (erros[16] == 0) {
				dica.setText("<br>Observe que no passo 2, o 2! do numerador simplifica com o 2! do denominador."
						+ "<br><br>");
			} else {
				dica.setText("<br>Observe que no passo 2, o 2! do numerador simplifica com o 2! do denominador.<br>"
						+ "Restando apenas "
						+ getValueOpcao(3)
						+ " x "
						+ getValueOpcao(4) + "<br><br>");
			}
			erros[16]++;
			break;
			
		case 18:
			if (erros[17] == 0) {
				dica.setText("<br>Efetue a operação do passo 3!</b> <br><br>");
			} else {
				dica.setText("<br>Efetue a operação do passo 3: " + getValueOpcao(7)
						+ " x " + getValueOpcao(8) + " <br><br>");
			}
			erros[17]++;
			break;

		}

	}

}
